SPB Git forge
28commits 1branches 0releases
7.7 MBsize
maindefault branch
10 days agolast push
Python 66.3% TypeScript 22.7% JavaScript 8.6% HTML 1.4% CSS 0.7%
1.4 KB · 37 lines tsx
Raw Blame History
1import type { Metadata } from 'next';2import { notFound } from 'next/navigation';3import { CompaniesModule, ConnectorsModule, CostsModule, FailuresModule, LlmModule, OverviewModule, QualityModule, QueueModule, ReviewsModule, SensorsModule } from '@/components/admin/modules';4import { ADMIN_MODULES } from '@/lib/admin-modules';5import { flat, str, type SP } from '@/lib/params';67export const metadata: Metadata = { title: 'Admin', robots: { index: false, follow: false } };8export const dynamic = 'force-dynamic';910export default async function AdminModulePage({ params, searchParams }: { params: Promise<{ module: string }>; searchParams: Promise<SP> }) {11  const { module } = await params;12  const sp = await searchParams;13  if (!ADMIN_MODULES.some((m) => m.id === module)) notFound();14  switch (module) {15    case 'connectors':16      return <ConnectorsModule />;17    case 'sensors':18      return <SensorsModule initial={Object.fromEntries(Object.entries(flat(sp)).filter(([, v]) => v !== undefined)) as Record<string, string>} />;19    case 'companies':20      return <CompaniesModule />;21    case 'failures':22      return <FailuresModule initialClass={str(sp.class)} />;23    case 'queue':24      return <QueueModule />;25    case 'llm':26      return <LlmModule />;27    case 'reviews':28      return <ReviewsModule />;29    case 'quality':30      return <QualityModule />;31    case 'costs':32      return <CostsModule />;33    default:34      return <OverviewModule />;35  }36}37